# -*- coding: utf-8 -*-
# @Project : S341-auto-test-model
# @File    : CombinePacket.py
# @Author  : 朱宽
# @Time    : 2021/6/3 10:56
# @Software: Win10 / Python3 / Pycharm
from src.utils import ReadTestData
from src.public.v541Public import v541Public
from config import globalConfig
import json


class CombinePacket():
    '''
    获取到excel表格中的数据后，将SendData和ResponseData中的字段拼接成标准的 发送包 和 应答包；

    最后将所有数据中的SendData和ResponseData替换成相应的16进制数的字符串，然后将数据交给
    ddtInput模块进行 使用者指定的 TestCaseFlag的数据。

    并将输出的数据存储成json格式的文件。

    先写入 json文件中，然后才会加载在ddt中
    '''

    def __init__(self, file_name):
        self.file_name_list = file_name.split('.')
        self.fileName = self.file_name_list[0]
        self.ReadExcel = ReadTestData.ReadExcel(file_name=file_name)  # 初始化这个类，获取excel表格中的数据
        self.test_data_all = self.ReadExcel.test_data()  # 调用这个函数，得到所有的测试用例数据

        self.v541Public=v541Public()

    def output_test_data(self):

        for i in range(0, len(self.test_data_all)):
            send_data_hex_str = self.v541Public.output_hex_packet_7e(
                data_list=self.test_data_all[i]["SendData"])  # 将SendData的value值转换为16进制数据包

            response_data_hex_str = self.v541Public.output_hex_packet_7e(data_list=self.test_data_all[i]["ResponseData"])

            self.test_data_all[i]["SendData"] = send_data_hex_str
            self.test_data_all[i]["ResponseData"] = response_data_hex_str

        #print(json.dumps(self.test_data_all,indent=4,ensure_ascii=False))
        result = self.test_data_all

        # 将处理后的结果以json格式文件持久化
        with open(globalConfig.test_data_path + self.fileName + '.json', 'w+') as f:
            json.dump(result, f, indent=4, ensure_ascii=False)

        # print('数据已写入json文件！')
        #print(result)
        return result

if __name__ == "__main__":
    fileName = 'zk-test-data.xlsx'
    test = CombinePacket(file_name=fileName)
    print('经过格式转换的excel表格数据：\n', json.dumps(test.test_data_all, indent=4, ensure_ascii=False))
    print('*' * 200)
    r=test.output_test_data()
    print(json.dumps(r,indent=4,ensure_ascii=False))


